#include<iostream>
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <dirent.h>
#include<stdint.h>
#include <iconv.h>
#include <ctype.h>
//n不变
void test1(int n)
{
    n = 99;
}
//n值改变
void test2(int* n)
{
    *n = 99;
}
//n值改变,仅c++可用
void test3(int &n)
{
    n = 99;
}

void testc1(char c[])
{
    strcpy(c,"efg");
}

void testc2(char* c)
{
    //strcpy(c,"efg");//值变,仅在传入数组时有效
    c = (char*)"gdk";//值不变
}

char* testc3(char* c)
{
    return "fff";
}
void testc4(char **c)
{
    *c = "1213";
}
int main()
{
    int n = 1;
    char c[10] = "abc";//变量，可以修改
    char *d = "xyz";//常量
    // test1(n);
    // printf("%d\n",n);//1 
    // test2(&n);
    // printf("%d\n",n);//99
    // test3(n);
    // printf("%d\n",n);//99
    
    // testc1(c);
    // printf("%s\n",c);//efg

    // testc2(c);
    // printf("%s\n",c);//efg
    testc2(d);
    printf("%s\n",d);//xyz
    d = "aaa";
    printf("%s\n",d);//aaa
    d=testc3(d);
    printf("%s\n",d);//fff
    testc4(&d);
    printf("%s\n",d);//1213
    return 0;
}
